class Aluno
  attr_accessor :id, :qsts, :pontos

  def initialize id
    @id = id
    @qsts = Array.new
    @pontos = 0
  end

  def calc_pontos gabarito
    @qsts.each_index index do
      # se nao der certo, mudar para @qsts[index][0]
      @pontos = @pontos + 1 if (@qsts[index][0] == gabarito[index][0])
    end
  end
end

class Prova
  attr_accessor :gab, :media_turma

  def initialize
    @gab = Array.new
    @media_turma = 0
  end

  def calc_media_turma v_alunos
    v_alunos.each aluno do
      @media_turma = @media_turma + aluno.pontos
    end
    @media_turma = @media_turma / v_alunos.size
  end
end


=begin
  MAIN
=end
begin
  prova = Prova.new
  alunos = Array.new
  puts "\tDigite o gabarito da prova"
  for i in (0..4)
    puts "questao #{i + 1} [a,b,c,d,e]"
    prova.gab << gets.downcase
  end

  parar = false
  until parar
    n = gets.to_i
    if (n == -1)
      parar = true
      next
    end
    aluno = Aluno.new(n)
    puts "Digite o gabarito do aluno #{n}"
    for j in (0..4)
      puts "questao #{j + 1} [a,b,c,d,e]"
      aluno.id(n)
      aluno.qsts << gets.downcase
    end
    aluno.calc_pontos(prova.gab)
  end

  # calcular media da turma
  prova.calc_media_turma(alunos)
rescue Exception => ex
  exit(1)
end
